importPackage(Packages.de.elo.ix.client);
importPackage(Packages.de.elo.ix.jscript);
//@include lib_Class.js
//@include lib_sol.common.Config.js
//@include lib_sol.common.JsonUtils.js
//@include lib_sol.common.SordUtils.js
//@include lib_sol.common.IxUtils.js
//@include lib_sol.common.WfUtils.js
//@include lib_sol.common.CounterUtils.js
//@include lib_sol.common.AclUtils.js
//@include lib_sol.common.AsyncUtils.js
//@include lib_sol.common.RepoUtils.js
//@include lib_sol.common.Template.js
//@include lib_sol.common.TranslateTerms.js
//@include lib_sol.common.ix.RfUtils.js
//@include lib_sol.common.ix.ActionBase.js
//@include lib_sol.common.ix.FunctionBase.js
//@include lib_sol.contract.ix.ContractUtils.js
var logger = sol.create("sol.Logger", { scope: "sol.contract.ix.actions.CreateContract" });
/**
* Creates a new contract.
*
* @eloix
*
* @requires sol.common.Config
* @requires sol.common.JsonUtils
* @requires sol.common.SordUtils
* @requires sol.common.IxUtils
* @requires sol.common.CounterUtils
* @requires sol.common.AclUtils
* @requires sol.common.RepoUtils
* @requires sol.common.Template
* @requires sol.common.TranslateTerms
* @requires sol.common.WfUtils
* @requires sol.common.ix.RfUtils
* @requires sol.common.ix.ActionBase
* @requires sol.common.ix.FunctionBase
* @requires sol.common.ix.functions.CopyFolderContents
* @requires sol.common.ix.functions.CopySordData
* @requires sol.contract.ix.ContractUtils
*/
sol.define("sol.contract.ix.actions.CreateContract", {
extend: "sol.common.ix.ActionBase",
requiredConfig: ["ci", "user", "contractType"],
/**
* @cfg {de.elo.ix.client.ClientInfo} ci (required)
*/
/**
* @cfg {de.elo.ix.client.UserInfo} user (required)
*/
/**
* @cfg {String} templateId (required)
* Object ID of the template
*/
initialize: function (config) {
var me = this;
me.$super("sol.common.ix.ActionBase", "initialize", [config]);
me.config = sol.contract.ix.ContractUtils.loadConfig();
},
getName: function () {
return "CreateContract";
},
process: function () {
var me = this,
name, objectType, objId, flowId;
if (!me.templateId) {
me.addErrorEvent("sol.contract.ix.actions.CreateContract.error.target", null, null, me.ci);
return;
}
name = me.buildElementName();
objectType = me.config.objectTypes[0];
objId = sol.common.IxUtils.execute("RF_sol_function_CopyFolderContents", {
objId: "0",
source: me.templateId,
copySourceAcl: false,
inheritDestinationAcl: false,
name: me.contractType + " - " + me.getTimeStampString(),
asAdmin: true,
useQuickCopy: true,
acl: {
mode: "SET",
entries: [
{ userName: me.user.name, rights: { r: true, w: true, d: true, e: true, l: true, p: true } }
]
},
metadata: [
{ type: "GRP", key: me.config.fields.objectType, value: objectType },
{ type: "GRP", key: me.config.fields.contractType, value: me.contractType }
]
});
flowId = me.startMaskStandardWorkflow(objId, { name: name, field: me.config.fields.defaultWorkflow });
if (flowId) {
me.addWfDialogEvent(flowId, { objId: objId, title: name, dialogId: me.getName() });
}
me.addGotoIdEvent(objId, undefined, {
type: "WF_STATUS",
value: "CREATE",
flowId: flowId
});
},
/**
* @private
* Creates the temporary elements and workflow name.
* @return {String}
*/
buildElementName: function () {
var me = this;
return sol.create("sol.common.Template", { source: me.config.workflows.createContract.workflowNameTemplate }).apply({ contractType: me.contractType });
},
/**
* @private
* Creates a timestamp.
* @return {String}
*/
getTimeStampString: function () {
return String(Packages.org.apache.commons.lang.time.DateFormatUtils.format(new java.util.Date(), "yyyyMMddHHmmss"));
}
});
/**
* @member sol.contract.ix.actions.CreateContract
* @method RF_sol_contract_action_CreateContract
* @static
* @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName
*/
function RF_sol_contract_action_CreateContract(ec, configAny) {
logger.enter("RF_sol_contract_action_CreateContract", configAny);
var rfUtils = sol.common.ix.RfUtils,
config = rfUtils.parseAndCheckParams(ec, arguments.callee.name, configAny, "contractType", "templateId"),
createContract, result;
config.ci = ec.ci;
config.user = ec.user;
createContract = sol.create("sol.contract.ix.actions.CreateContract", config);
result = createContract.execute();
logger.exit("RF_sol_contract_action_CreateContract", result);
return result;
}